home *** CD-ROM | disk | FTP | other *** search
/ Experimental BBS Explossion 3 / Experimental BBS Explossion III.iso / pascal / tdl410.zip / TDL410.MAN < prev    next >
Text File  |  1993-10-29  |  73KB  |  2,551 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.                       TTTTT  UU UU  RRRR   BBBB   OOOOO
  12.                         T    UU UU  R   R  B   B  O   O
  13.                         T    UU UU  RRRR   BBBB   O   O
  14.                         T    UU UU  R R    B   B  O   O
  15.                         T     UUU   R  RR  BBBB   OOOOO
  16.  
  17.  
  18.    DDDD   EEEEE  VV VV  EEEEE  LL     OOOOO  PPPP   MMMMM  EEEEE  NNNNN  TTTTT
  19.    D   D  E      VV VV  E      LL     O   O  P   P  M M M  E      N   N    T
  20.    D   D  EEEE    VVV   EEEE   LL     O   O  PPPP   M M M  EEEE   N   N    T
  21.    D   D  E       VVV   E      LL     O   O  P      M   M  E      N   N    T
  22.    DDDD   EEEEE    V    EEEEE  LLLLL  OOOOO  P      M   M  EEEEE  N   N    T
  23.  
  24.  
  25.                  LL     IIIII  BBBB   RRRR    AAA   RRRR   YY YY
  26.                  LL       I    B   B  R   R  A   A  R   R  YY YY
  27.                  LL       I    BBBB   RRRR   AAAAA  RRRR    YYY
  28.                  LL       I    B   B  R R    A   A  R R      Y
  29.                  LLLLL  IIIII  BBBB   R  RR  A   A  R  RR    Y
  30.  
  31.  
  32.                         VERSION 4.10 FOR BORLAND PASCAL 7.0
  33.                                      DOS MODE
  34.                (C) 1990-1993 OnTime Marketing, all rights reserved
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47. ┌──────────────────────────────────────────────────────────────────────────────┐
  48. │ Turbo Development Library V. 4.10   Chapter 1                        WELCOME │
  49. └──────────────────────────────────────────────────────────────────────────────┘
  50.  
  51. Welcome to the most complete function and procedure library ever made for
  52. Borland Pascal 7.0.
  53. This is a collection with over 200 functions and procedures you can incorporate
  54. in your own Borland Pascal 7.0 programs for the IBM and IBM-Compatible PC.
  55. In addition to the unique functions TDL 4.1 also brings a different philosophy.
  56. TDL 4.1 is written using as much inline assembler code as possible to make the
  57. functions and procedures as fast and small as possible.
  58. And TDL 4.1 is modular so that you don't have to use the entire package if you
  59. only need one module.
  60.  
  61.  
  62. Software Licence Statement.
  63. ---------------------------
  64. This manual and software described in it are protected by international copy-
  65. right laws. You still are allowed to make copies and distribute them as this
  66. piece of software is shareware, as long as you do not alter the package in any
  67. way. The functions and procedures described within this manual may not be used
  68. in commercial programming without registration. When registrating, you are per-
  69. mitted to distribute the programmes done with Borland Pascal 7.0 and Turbo
  70. Development Library 4.1 royalty-free, and you don't need to mention TDL 4.1
  71. anywhere in your programs, nor your manuals.
  72.  
  73.  
  74.  
  75. Requirements.
  76. -------------
  77. To include the Turbo Development Library 4.1 units into your Borland Pascal 7.0
  78. programs, you must have the following:
  79.  
  80.         ■ An IBM, PS/1, PS/2, AT, 386, 486 or 100% compatible computer
  81.         ■ Borland Pascal 7.0 installed on your harddisk
  82.         ■ At least ½Mb of free hard disk space
  83.         ■ Running MS-DOS 4.x and above
  84.         ■ At least 512Kb free to run Borland Pascal 7.0
  85.         ■ One 3.5" or 5.25" Double- or high density floppy drive
  86.         ■ One monocrome or color monitor
  87.  
  88. If you run MS-DOS below version 4.1, or running another DOS (eg. DR-DOS) you
  89. might have some troubles with some of the functions and procedures.
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100. ┌──────────────────────────────────────────────────────────────────────────────┐
  101. │ Turbo Development Library V. 4.10   Chapter 2                   INSTALLATION │
  102. └──────────────────────────────────────────────────────────────────────────────┘
  103.  
  104. To install the function and procedures, simply unpack the archives in the main
  105. package into your Borland Pascal 7.0 directory, using the LHA or LHARC programs.
  106. The demos and examples may be unpacked into directories of your own taste, but
  107. when altering and compiling them (or your own programs) you must remember to
  108. set the DOS PATH to include the Borland Pascal 7.0 directory.
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119. ┌──────────────────────────────────────────────────────────────────────────────┐
  120. │ Turbo Development Library V. 4.10   Chapter 3                     UNIT TDCSL │
  121. └──────────────────────────────────────────────────────────────────────────────┘
  122.  
  123. Function PrinterReady.
  124. ----------------------
  125. Calling
  126.   Test:=PrinterReady : Boolean;
  127.  
  128. Purpose
  129.   Tests if the printer on LPT1 is ready to recieve data. If it is ready, this
  130.   function returns TRUE otherwise it will return FALSE.
  131.  
  132.  
  133.  
  134. Function ReadFromCom.
  135. ---------------------
  136. Calling
  137.   ComChar:=ReadFromCom : Char;
  138.  
  139. Purpose
  140.   Waits on a character from COM1 and returns it when read.
  141.  
  142.  
  143.  
  144. Procedure SendToCom.
  145. --------------------
  146. Calling
  147.   SendToCom(Ch : Char);
  148.  
  149. Purpose
  150.   Sends the character Ch to COM1 port.
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161. ┌──────────────────────────────────────────────────────────────────────────────┐
  162. │ Turbo Development Library V. 4.10   Chapter 4                    UNIT TDLINE │
  163. └──────────────────────────────────────────────────────────────────────────────┘
  164.  
  165. Function ReadFormStr.
  166. ---------------------
  167. Calling
  168.   FormStr:=ReadFormStr(X, Y, Len : Integer; DefaultStr : String[80]) :
  169.                       String[80];
  170.  
  171. Purpose
  172.   ReadFormStr is a formatted input function, asking for a string at the maxi-
  173.   mum length of Len at position X,Y. It writes the default string at that
  174.   position, and that may be altered using arrows, delete and backspace.
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185. ┌──────────────────────────────────────────────────────────────────────────────┐
  186. │ Turbo Development Library V. 4.10   Chapter 5                     UNIT TDEMS │
  187. └──────────────────────────────────────────────────────────────────────────────┘
  188.  
  189. Function EMSInit.
  190. -----------------
  191. Calling
  192.   Error:=EMSInit(Var Address, Version : Word; Var FreePages : Integer) : Integer;
  193.  
  194. Purpose
  195.   This function is testing if an EMM-manager is present in memory and returns
  196.   the address and version of the EMM-manager (EMMxxxx0) in word and the free
  197.   16 Kb pages as an integer. The errorcode will hold the EMM error if something
  198.   is wrong, otherwise it will hold zero.
  199.  
  200.  
  201. Function EMSAllocate.
  202. ---------------------
  203. Calling
  204.   Error:=EMSAllocate(Pages : Integer; Var Handle : Word) : Integer;
  205.  
  206. Purpose
  207.   The function EMSAllocate will try to allocate the given 16 Kb pages and returns
  208.   the handle of those pages. Error will hold any possible EMM error.
  209.  
  210.  
  211. Function EMSDeallocate.
  212. -----------------------
  213. Calling
  214.   Error:=EMSDeallocate(Handle : Word) : Integer;
  215.  
  216. Purpose
  217.   EMSDeallocate will deallocate the allocated EMS handle given in handle.
  218.  
  219.  
  220. Function EMSMapPage.
  221. --------------------
  222. Calling
  223.   Error:=EMSMapPage(PhysPage, LogPage : Integer; Handle : Word) : Integer;
  224.  
  225. Purpose
  226.   After allocating the EMS pages you need to allocate the physical and logical
  227.   pages to use with that EMS handle. Error will hold any possible EMM error or
  228.   zero if nothing went wrong.
  229.  
  230.  
  231. Function EMSGetUnallocatedPageCount.
  232. ------------------------------------
  233. Calling
  234.   Error:=EMSGetUnallocatedPageCount(Var FreePages : Integer) : Integer;
  235.  
  236. Purpose
  237.   The function EMSGetUnallocatedPageCount will return the free pages not allo-
  238.   cated with EMSAllocate avaliable in your system, and return them in the integer
  239.   variable FreePages.
  240.  
  241.  
  242. Function EMSSave.
  243. -----------------
  244. Calling
  245.   Error:=EMSSave(Handle : Word) : Integer;
  246.  
  247. Purpose
  248.   The function EMSSave will like the function EMSRestore be used with TSR and
  249.   multitasking systems. A TSR program will halt a running program and it will
  250.   sometimes also use the EMS in your system. This TSR program will call EMSSave
  251.   before exiting to be sure that the code allocated in EMS will still be avai-
  252.   lable when it pop up again.
  253.  
  254.  
  255. Function EMSRestore.
  256. --------------------
  257. Calling
  258.   Error:=EMSRestore(Handle : Word) : Integer;
  259.  
  260. Purpose
  261.   This function restores EMS saved by the function EMSSave. It will like EMSSave
  262.   be used in TSR and multitasking programs.
  263.  
  264.  
  265. Function EMSGetHandleCount.
  266. ---------------------------
  267. Calling
  268.   Error:=EMSGetHandleCount(Var ActiveHandles : Integer) : Integer;
  269.  
  270. Purpose
  271.   EMSGetHandleCount returns in the variable ActiveHandles the free handles you
  272.   will be able to use for further EMS allocating.
  273.  
  274.  
  275. Function EMSGetHandlePages.
  276. ---------------------------
  277. Calling
  278.   Error:=EMSGetHandlePages(Handle : Word; Pages : Integer) : Integer;
  279.  
  280. Purpose
  281.   The function EMSGetHandlePages returns in the variable Pages the number of
  282.   pages allocated in the given Handle.
  283.  
  284.  
  285. Function EMSGetAllHandlePages.
  286. ------------------------------
  287. Calling
  288.   Error:=EMSGetAllHandlePages(Var HandleArr : HandlePageArr; Var Handles :
  289.        Integer) : Integer;
  290.  
  291. Purpose
  292.   The function EMSGetAllHandlePages returns the number of allocated handle-
  293.   pages and the page numbers in HandleArr.
  294.  
  295.  
  296. Function EMSGetPageMap.
  297. -----------------------
  298. Calling
  299.   Map:=EMSGetPageMap(PageMap : Pointer) : Integer;
  300.  
  301. Purpose
  302.   EMSGetPageMap returns a pointer to the actual EMM PageMap in your memory.
  303.  
  304.  
  305. Function EMSSetPageMap.
  306. -----------------------
  307. Calling
  308.   Map:=EMSSetPageMap(PageMap : Pointer) :Integer;
  309.  
  310. Purpose
  311.   EMSSetPageMap loaded the EMM-manager with an actual EMM PageMap returned
  312.   with the function EMSGetPageMap.
  313.  
  314.  
  315. Function EMSSwapPageMap.
  316. ------------------------
  317. Calling
  318.   Swap:=EMSSwapPageMap(Target, Source : Pointer) : Integer;
  319.  
  320. Purpose
  321.   EMSSwapPageMap is a combination between then functions EMSGetPageMap and
  322.   EMSSetPageMap. It is swapping the EMM condition in the pointer Target to
  323.   the EMM condition in the pointer Source.
  324.  
  325.  
  326. Function EMSGetPageMapSize.
  327. ---------------------------
  328. Calling
  329.   Size:=EMSGetPageMapSize(var Size : Word) : Integer;
  330.  
  331. Purpose
  332.   EMSGetPageMapSize returns the size of the actual EMM conditions. This
  333.   function must be called before using the functions EMSGetPageMap and
  334.   EMSSwapPageMap, so the used memory space can be detected.
  335.  
  336.  
  337. Function EMSGetParticalPageMap.
  338. -------------------------------
  339. Calling
  340.   PartMap:=EMSGetParticalPageMap(Page, Condition : Pointer) : Integer;
  341.  
  342. Purpose
  343.   This function saves the condition of the given page. The size to save must
  344.   be given with the function EMSGetSizeParticalPageMap. The Pointer Page
  345.   points to a structure, containing a word with the numbers of following
  346.   physical segment addresses, and secondly the segment address.
  347.   The Pointer Condition points of the memory adress, where the EMM manager
  348.   can place the informations.
  349.  
  350.  
  351. Function EMSSetParticalPageMap.
  352. -------------------------------
  353. Calling
  354.   PartMap:=EMSSetParticalPageMap(Condition : Pointer) : Integer;
  355.  
  356. Purpose
  357.   The function EMSSetParticalPageMap is used to set the condition before
  358.   using the function EMSGetParticalPageMap.
  359.  
  360.  
  361. Function EMSGetSizeParticalPageMap.
  362. -----------------------------------
  363. Calling
  364.   Size:=EMSGetSizeParticalPageMap(Pages : Integer; Var Size : Word) : Integer;
  365.  
  366. Purpose
  367.   EMSGetSizeParticalPageMap returns the size of the given page in bytes.
  368.  
  369.  
  370. Function EMSMapMultipleHandlePagesPage.
  371. ---------------------------------------
  372. Calling
  373.   Error:=EMSMapMultipleHandlePagesPage(Numbers, Handle : Word; Page : Pointer)
  374.                                       : Integer;
  375.  
  376. Purpose
  377.   This function maps multiple, logical pages. It returns a pointer Page poin-
  378.   ting to an array of the following structure:
  379.                 - 2 bytes logical page
  380.                 - 2 bytes physical page
  381.  
  382.  
  383. Function EMSMapMultipleHandlePagesSegment.
  384. ------------------------------------------
  385. Calling
  386.   Error:=EMSMapMultipleHandlePagesSegment(Numbers, Handle : Word; Segment :
  387.                                          Pointer ) : Integer;
  388.  
  389. Purpose
  390.   EMSMapMultipleHandlePagesSegment works almost as the function EMSMapMultiple-
  391.   HandlePages, but the two last bytes will here not hold the physical page
  392.   but the segment address on the logical page.
  393.  
  394.  
  395. Function EMSReallocatePages.
  396. ----------------------------
  397. Calling
  398.   Error:=EMSReallocatePages(Var NewPages : Integer; Handle : Word) : Integer;
  399.  
  400. Purpose
  401.   EMSReallocatePages reallocate allocated pages. Var NewPages are used for
  402.   further reference to the pages at that EMM Handle.
  403.  
  404.  
  405. Function EMSGetHandleAttribut.
  406. ------------------------------
  407. Calling
  408.   Error:=EMSGetHandleAttribut(Handle : Word; Var Attribut : Integer) : Integer;
  409.  
  410. Purpose
  411.   EMSGetHandleAttribut returns the attribute of the EMM Handle. This attribut
  412.   can be reset protected or not reset protected. A reset protected Handle
  413.   will still exist when the computer is resetted using CTRL-ALT-DEL. That
  414.   can be e.g. RAM-Disks that works with expanded memory.
  415.  
  416.  
  417. Function EMSSetHandleAttribut.
  418. ------------------------------
  419. Calling
  420.   Error:=EMSSetHandleAttribut(Handle : Word; Attribut : Integer) : Integer;
  421.  
  422. Purpose
  423.   EMSSetHandleAttribut sets the attribut of the EMM Handle.
  424.   See also EMSGetHandleAttribut.
  425.  
  426.  
  427. Function EMSGetHandleAttributCapability.
  428. ----------------------------------------
  429. Calling
  430.   Error:=EMSGetHandleAttributCapability(Var Attribut : Integer) : Integer;
  431.  
  432. Purpose
  433.   EMSGetHandleAttributCapability tested if the EMM Manager in your system
  434.   supports the reset protedted EMM mode.
  435.  
  436.  
  437. Function EMSGetHandleName.
  438. --------------------------
  439. Calling
  440.   Error:=EMSGetHandleName(Handle : Word; Name : HandleName) : Integer;
  441.  
  442. Purpose
  443.   EMSGetHandleName returns the given name of the EMM Handle.
  444.   HandleName is defined as follows:
  445.   Type HandleName = Array[1..8] Of Char;
  446.  
  447.  
  448. Function EMSSetHandleName.
  449. --------------------------
  450. Calling
  451.   Error:=EMSSetHandleName(Handle : Word; Name : HandleName) : Integer;
  452.  
  453. Purpose
  454.   EMSSetHandleName sets the name of the given EMM handle.
  455.  
  456.  
  457. Function EMSGetHandleDirectory.
  458. -------------------------------
  459. Calling
  460.   Error:=EMSGetHandleDirectory(Dir : Pointer; Var Handle : Word) : Integer;
  461.  
  462. Purpose
  463.   The function EMSGetHandleDirectory returns all handles with names. It is
  464.   placed in memory where Dir points to, in an array with the following struc-
  465.   ture:    - 2 bytes Handle
  466.            - 8 Bytes Handle Name
  467.   The free memory for that structure must be at least 225 * (2 + 8) bytes =
  468.   2550 bytes, when a maximum of 225 EMM Handles are supported.
  469.  
  470.  
  471. Function EMSSearchNamedHandle.
  472. ------------------------------
  473. Calling
  474.   Error:=EMSSearchNamedHandle(Name : HandleName ; Var Handle : Word) : Integer;
  475.  
  476. Purpose
  477.   EMSSearchNamedHandle will search for an EMM Handle with the given Name.
  478.  
  479.  
  480. Function EMSGetTotalHandles.
  481. ----------------------------
  482. Calling
  483.   Error:=EMSGetTotalHandles(Var Handle : Word) : Integer;
  484.  
  485. Purpose
  486.   EMSGetTotalHandles will return the total of allocated handles in the Var
  487.   Handle.
  488.  
  489.  
  490. Function EMSJmp.
  491. ----------------
  492. Calling
  493.   Error:=EMSJmp(Handle : Word; PageSegment : Integer; Pages : JmpStru) :
  494.                Integer;
  495.  
  496. Purpose
  497.   EMSJmp will jump to the given place in your memory and continue to execute
  498.   the running program. This function is suitable when your program will exe-
  499.   cute a code located in expanded memory.
  500.   JmpStru is defined as follows:
  501.   Type JmpStru = Record
  502.                    Address      : Pointer;
  503.                    NumIn        : Byte;      {Number of calls}
  504.                    PointIn      : ^MapStru;  {4 byte pointer to MapStru}
  505.                  End;
  506.   MapStru is defined as follows:
  507.   Type MapStru = Record
  508.                    LogPage      : Word;      {Number of logical page}
  509.                    PhysPage     : Word;      {Number of physical page}
  510.                  End;
  511.  
  512.  
  513. Function EmsCall.
  514. -----------------
  515. Calling
  516.   Error:=EMSCall(Handle : Word; PageSegment : Integer; Pages : CallStru) :
  517.                 Integer;
  518.  
  519. Purpose
  520.   EMSCall will call the given place in your memory and execute it. When
  521.   finished it will return to where you left your main progra, This will be
  522.   suitable for sub-programs or -routines.
  523.   CallStru is defined as follows:
  524.   Type CallStru = Record
  525.                     Address     : Pointer;
  526.                     NumIn       : Byte;
  527.                     PointIn     : ^MapStru;
  528.                     TargetType  : Byte;         {Number of arrays for the
  529.                                                  sub-program}
  530.                     TargetPointIn : ^MapStru;
  531.                   End;
  532.  
  533.  
  534. Function EMSMoveExchangeMemory.
  535. -------------------------------
  536. Calling
  537.   Error:=EMSMoveExchangeMemory(MoveExch : Integer; Struct : EMSMoveStru) :
  538.                               Integer;
  539.  
  540. Purpose
  541.   EMSMoveExchangedMemory will exchange the given memory. It works both in con-
  542.   ventional memory and in expanded.
  543.   EMSMoveStru is defined as follows:
  544.   Type EMSMoveStru = Record
  545.                        Len              : LongInt;
  546.                        SourceType       : Byte; {Memorytype conventional or
  547.                                                 expanded}
  548.                        SourceHandle     : Word;
  549.                        SourceOffset     : Word;
  550.                        SourceSegment    : Word;
  551.                        TargetType       : Byte;
  552.                        TargetHandle     : Word;
  553.                        TargetOffset     : Word;
  554.                        TargetSegment    : Word;
  555.                      End;
  556.  
  557.  
  558. Function EMSGetMappablePhyAdressArray.
  559. --------------------------------------
  560. Calling
  561.   Error:=EMSGetMappablePhyAdressArray(Struct : Pointer; Var Entries : Integer)
  562.                                      : Integer;
  563.  
  564. Purpose
  565.   The function EMSGetMappablePhyAdressArray returns in memory an array with all
  566.   the physical pages. Before calling EMSGetMappablePhyAdressArray, the function
  567.   EMSGetMappableEntriesPhyAdressArray must be called, to fix the size of the
  568.   used handles.
  569.   This function returns in Var Entries the numbers of positions in the memory
  570.   array that are legal handle adresses.
  571.   The memory array, where Struct points to, will be an array of the following
  572.   structure:    - 2 bytes with segmentaddress of the physical page
  573.                 - 2 bytes page number of the physical page
  574.  
  575.  
  576. Function EMSGetMappableEntriesPhyAdressArray.
  577. ---------------------------------------------
  578. Calling
  579.   Error:=EMSGetMappableEntriesPhyAdressArray(Var Entries : Integer) : Integer;
  580.  
  581. Purpose
  582.   EMSGetMappableEntriesPhyAdressArray returns the number of entries for use
  583.   with EMSGetMappablePhyAdressArray. This number must be returned four times
  584.   (every array position uses four bytes) to fix the total memoryusage.
  585.  
  586.  
  587. Function EMSPrepareWarmBoot.
  588. ----------------------------
  589. Calling
  590.   Error:=EMSPrepareWarmBoot : Integer;
  591.  
  592. Purpose
  593.   The function EMSPrepareWarmBoot will prepare your system for a warm boot
  594.   (CTRL-ALT-DEL) to make sure the reset protected handles will be avaliable
  595.   after a system warm boot. 
  596.  
  597.  
  598.  
  599.  
  600.  
  601.  
  602.  
  603.  
  604.  
  605.  
  606. ┌──────────────────────────────────────────────────────────────────────────────┐
  607. │ Turbo Development Library V. 4.10   Chapter 6                     UNIT TDCRT │
  608. └──────────────────────────────────────────────────────────────────────────────┘
  609.  
  610. Procedure FastCenter.
  611. ---------------------
  612. Calling
  613.   FastCenter(Y, ForeGr, BackGr : Integer; St : String);
  614.  
  615. Purpose
  616.   FastCenter will center the string St on the screen
  617.   coordinate (39-Length(St) Div 2, Y). Therefore Length
  618.   (St) must be in the range 1-80. The string will be
  619.   written in the colors ForeGr (ForeGround) and BackGr
  620.   (BackGround).
  621.   Notice: The screen width is assumed to be 80 chars.
  622.  
  623. Example
  624.   Program Exam1;
  625.   Uses TdCrt,
  626.   Begin
  627.        FastCenter(10, 7, 0, 'Hello World!');
  628.   End.
  629.  
  630.  
  631. Procedure FastWrite.
  632. --------------------
  633. Calling
  634.   FastWrite(X, Y, ForeGr, BackGr : Integer; St : String);
  635.  
  636. Purpose
  637.   FastWrite will write the string St on the screen
  638.   coordinates given in integer S and Y, in the color
  639.   ForeGr (ForeGround) and BackGr (BackGround). This
  640.   procedure will work 50-80% faster than GotoXY and
  641.   Write.
  642.  
  643. Example
  644.   Program Exam2;
  645.   Uses TdCrt;
  646.   Begin
  647.        FastWrite(10, 10, 7, 0, 'Hello World!');
  648.   End.
  649.  
  650.  
  651. Function FindVideoAdr.
  652. ----------------------
  653. Calling
  654.   Adr:=FindVideoAdr : Word;
  655.  
  656. Purpose
  657.   FindVideoAdr will return the address (either $B000 or
  658.   $B800) where your displayadaptor uses memory to store
  659.   the screen. This will come handy when copying the video
  660.   memory to EMS or disk, The procedures FastWrite,
  661.   FastCenter, PW and PWLn are writing direct to that
  662.   address.
  663.   Notice: FindVideoAdr is identical with the function
  664.   GetVideoMemory, but this will work abour 10% faster.
  665.  
  666. Example
  667.   Program Exam3;
  668.   Uses TdCrt;
  669.   Var Adr : Word;
  670.   Begin
  671.        Adr:=FindVideoAdr;
  672.        Writeln('Video stored at: $',ToHex(Adr));
  673.   End.
  674.  
  675.                                                                                  
  676. Procedure GetKeyStatus.
  677. -----------------------
  678. Calling
  679.   GetKeyStatus(Var Ins, CapsLock, NumLock, ScrollLock,
  680.               Alt, Ctrl, LeftShift, RightShift : Boolean);
  681.  
  682. Purpose
  683.   GetKeyStatus will get the status as a boolean variable
  684.   for the keys: Ins, CapsLock, NumLock, ScrollLock, Alt,
  685.   Ctrl, LeftShift and RightShift. Is the key is pressed,
  686.   the variable will return TRUE otherwise FALSE.
  687.  
  688.  
  689. Function FillString.
  690. --------------------
  691. Calling
  692.   St:=FillString(FillCh : Char; L : Word);
  693.  
  694. Purpose
  695.   FillString will return a string variable containing L
  696.   characters of the character FillCh. The number L must
  697.   be less than 256, because this function is not
  698.   supported by Turbo Development Library BigStrings.
  699.  
  700. Example
  701.   Program Exam4;
  702.   Uses TdCrt;
  703.   Var St : String;
  704.   Begin
  705.        St:=FillString('*', 80);
  706.        Writeln('Here comes 80 times *');
  707.        Writeln(St);
  708.   End.
  709.  
  710.                                                                                  
  711. Function GetVideoMemory.
  712. ------------------------
  713. Calling
  714.   Memory:=GetVideoMemory : Word;
  715.  
  716. Purpose
  717.   See "Function FindVideoAdr."
  718.   FindVideoAdr and GetVideoMemory are identical, but
  719.   FindVideoAdr is about 10% faster.
  720.  
  721.  
  722. Function GetYesNo.
  723. ------------------
  724. Calling
  725.   Answer:=GetYesNo : Boolean;
  726.  
  727. Purpose
  728.   The function GetYesNo will return TRUE if the key y or
  729.   Shift-y is pressed. It will return FALSE if the key n
  730.   or Shift-n is pressed. No other keys will affect this
  731.   function.
  732.  
  733. Example
  734.   Program Exam5;
  735.   Uses TdCrt;
  736.   Begin
  737.        Writeln('Do you want tp continue ? [Y/N]');
  738.        If GetYesNo = FALSE Then
  739.        Begin
  740.             Writeln('OK. Halting program.');
  741.             Halt;
  742.        End;
  743.        Writeln('Continuing program.');
  744.   End.
  745.  
  746.  
  747. Function IsBitOn.
  748. -----------------
  749. Calling
  750.   Test:=IsBitOn(Position, TestByte : Byte) : Boolean;
  751.  
  752. Purpose
  753.   IsBitOn will test the byte testByte for the bit
  754.   Position. If Position is set, IsBitOn will returb TRUE,
  755.   otherwise it will return FALSE.
  756.  
  757. Example
  758.   Program Exam6;
  759.   Uses TdCrt;
  760.   Var Test : Boolean;
  761.   Begin
  762.        Test:=IsBitOn(4,255);
  763.        Write('Bit 4 in 255 is ');
  764.        If Test Then
  765.                Writeln('ON') Else
  766.                Writeln('OFF');
  767.        Test:=IsBitOn(4,0);
  768.        Write('Bit 4 in 0 is ');
  769.        If Test Then
  770.                Writeln('ON') Else
  771.                Writeln('OFF');
  772.   End.
  773.  
  774.                                                                                  
  775. Procedure PW.
  776. -------------
  777. Calling
  778.   PW(X, Y : Byte; St : String);
  779.  
  780. Purpose
  781.   PW will position and write the string St at position X,
  782.   Y. This is done by using direct memory writing, like
  783.   FastCenter and FastWrite. Therefore PW is much faster
  784.   than GotoXY and Write.
  785.   PW will write St in the current foreground- and
  786.   background colors.
  787.  
  788.  
  789. Procedure PWLn.
  790. ---------------
  791. Calling
  792.   PWLn(X, Y : Byte; St : String);
  793.  
  794. Purpose
  795.   See "Procedure PW."
  796.   Notice: PWLn will write St and a new line like GotoXY
  797.   and Writeln, but still much faster.
  798.  
  799.                                                                                  
  800. Function ReadKeyCode.
  801. ---------------------
  802. Calling
  803.   GetCode:=ReadKeyCode : Word;
  804.  
  805. Purpose
  806.   ReadKeyCode will return the extended key-code for the
  807.   pressed key-combination.
  808.  
  809. Example
  810.   Program Exam7;
  811.   Uses TdCrt;
  812.   Var KCode : Word;
  813.   Begin
  814.        Writeln('Press any Key-Combination.');
  815.        KCode:=ReadKeyCode;
  816.        Writeln('KeyCode is: $',ToHex(KCode));
  817.   End.
  818.  
  819.                                                                                  
  820. Function ReadScreenChar.
  821. ------------------------
  822. Calling
  823.   Ch:=ReadScreenChar(X, Y : Byte) : Char;
  824.  
  825. Purpose
  826.   ReadScreenChar will read the ANSI-character written at
  827.   position X, Y and return it as a char-variable.
  828.  
  829.  
  830. Procedure Scroll.
  831. -----------------
  832. Calling
  833.   Scroll(Chars : Integer; X1, Y1, X2, Y2, Color : Byte);
  834.  
  835. Purpose
  836.   Scroll will scroll your text-screen Chars characters
  837.   either up (Chars is negative) or down (Chars is
  838.   positive). It will work in the window (X1, Y1) - (X2,
  839.   Y2) and in the selected color.
  840.  
  841.                                                                                  
  842. Procedure SetBit.
  843. -----------------
  844. Calling
  845.   SetBit(Position, Value : Byte; Var ChangeByte : Byte);
  846.  
  847. Purpose
  848.   SetBit will set (or reset) the bit at Position in the
  849.   variable ChangeByte to the value in Value. Value must
  850.   be either 1 (set) or 0 (reset).
  851.  
  852. Example
  853.   Program Exam8;
  854.   Uses TdCrt;
  855.   Var TestByte : Byte;
  856.   Begin
  857.        TestByte:=0;
  858.        Writeln('Bit 4 in ',TestByte,' is on: ',IsBitOn(4, TestByte));
  859.        SetBit(4, 1, TestByte);
  860.        Writeln('Bit 4 in ',TestByte,' is on: ',IsBitOn(4, TestByte));
  861.   End.
  862.  
  863.  
  864. Function SpaceOut.
  865. ------------------
  866. Calling
  867.   St:=SpaceOut(St1 : String; L : Word) : String;
  868.  
  869. Purpose
  870.   SpaceOut will make a string Length L, copy St1 onto it
  871.   and fill the remaining places with a space (Chr(32)).
  872.  
  873.                                                                                  
  874. Function Sum.
  875. -------------
  876. Calling
  877.   AB:=Sum(A, B : Integer) : Integer;
  878.  
  879. Purpose
  880.   Sum will return the addition of the two given integers
  881.   about 50% faster than a normal addition (AB:=A+B).
  882.  
  883.                                                                                  
  884. Function ToHex.
  885. ---------------
  886. Calling
  887.   Hex:=ToHex(W : Word) : String;
  888.  
  889. Purpose
  890.   ToHex will convert the word W to a string containng the
  891.   Hex-value af the word.
  892.  
  893. Example
  894.   Program Exam9;
  895.   Uses TdCrt;
  896.   Begin
  897.        Writeln('Converting 597 to hex: $',ToHex(597));
  898.   End.
  899.  
  900.  
  901. Function UpString.
  902. ------------------
  903. Calling
  904.   St:=UpString(St1 : String) : String;
  905.  
  906. Purpose
  907.   UpString will convert every char in the string St1 to
  908.   their equal upper case letter.
  909.   Notice: UpString will only have effect on strings
  910.   containing chars in the range from 'a' to 'z'.
  911.  
  912. Example
  913.   Program Exam10;
  914.   Uses TdCrt;
  915.   Var St1 : String;
  916.   Begin
  917.        Write('Enter a String : ');
  918.        Readln(St1);
  919.        Writeln(St1);
  920.        Writeln(UpString(St1));
  921.   End.
  922.  
  923.  
  924. Function WaitKey.
  925. -----------------
  926. Calling
  927.   Test:=WaitKey : Boolean;
  928.  
  929. Purpose
  930.   Halts your program execution until you press any key on
  931.   your keyboard.
  932.  
  933. Example
  934.   Program Exam11;
  935.   Uses TdCrt;
  936.   Begin
  937.        Writeln('Press any key...');
  938.        If WaitKey Then;
  939.        Writeln('Thanks.');
  940.   End.
  941.  
  942.  
  943.  
  944.  
  945.  
  946.  
  947.  
  948.  
  949.  
  950.  
  951. ┌──────────────────────────────────────────────────────────────────────────────┐
  952. │ Turbo Development Library V. 4.10   Chapter 7                      UNIT TDIO │
  953. └──────────────────────────────────────────────────────────────────────────────┘
  954.  
  955. Procedure Beep.
  956. ---------------
  957. Calling
  958.   Beep;
  959.  
  960. Purpose
  961.   Performs a bell-sound in your PC speaker.
  962.   
  963.  
  964. Procedure BigCursor.
  965. --------------------
  966. Calling
  967.   BigCursor;
  968.  
  969. Purpose
  970.   Turns your text cursor into a block. That makes it very easy to see.
  971.   
  972.  
  973. Procedure DBox.
  974. ---------------
  975. Calling
  976.   DBox(X1, Y1, X2, Y2 : Integer; Header : String);
  977.  
  978. Purpose
  979.   DBox draws a double lined box on the screen from the coordinates X1,Y1 to
  980.   X2,Y2 and put on the title given in Header.
  981.  
  982.  
  983. Procedure FillScreen.
  984. ---------------------
  985. Calling
  986.   FillScreen(Ch : Char);
  987.  
  988. Purpose
  989.   FillScreen will fill the whole text screen with the character given in Ch.
  990.  
  991.   
  992. Procedure HideCursor.
  993. ---------------------
  994. Calling
  995.   HideCursor;
  996.  
  997. Purpose
  998.   HideCursor will make the text cursor disappear. It will only be the physical
  999.   part of the cursor that will disappear. You will still be able to do cursor
  1000.   related operations with no cursor seen on the screen.
  1001.  
  1002.  
  1003. Procedure MoveFromScreen.
  1004. -------------------------
  1005. Calling
  1006.   MoveFromScreen(Var Source, Dest; Len : Integer);
  1007.  
  1008. Purpose
  1009.   Moves data from the video buffer. Source will be the actual color video
  1010.   buffer.
  1011.   Remember to set Len that there are two bytes for each character. For an
  1012.   entite screen Len would be 4000.
  1013.  
  1014.      
  1015. Procedure MoveToScreen.
  1016. -----------------------
  1017. Calling
  1018.   MoveToScreen(Var Source, Dest; Len : Integer);
  1019.  
  1020. Purpose
  1021.   Moves data back from memory to the video buffer. Still remember to setting Len
  1022.   to two times the number og chars you want to move.
  1023.  
  1024.  
  1025. Function ReadChFromScr.
  1026. -----------------------
  1027. Calling
  1028.   Ch:=ReadChFromScreen(X, Y : Integer) : Char;
  1029.  
  1030. Purpose
  1031.   ReadChFromScreen reads the character at the screen coordinates X,Y and returns
  1032.   it in Ch. If no character found at the given coordinates Ch will hold a space
  1033.   (Chr(32)).
  1034.  
  1035.   
  1036. Function ReadStFromScr.
  1037. -----------------------
  1038. Calling
  1039.   Str:=ReadStFromScr(X, Y, Len : Integer) : String;
  1040.  
  1041. Purpose
  1042.   ReadStFromString returns the characters found on screen coordinate X,Y and Len
  1043.   characters forward and returns them in a string format in the variable Str.
  1044.  
  1045.  
  1046. Procedure RecallScreen.
  1047. -----------------------
  1048. Calling
  1049.   RecallScreen(Number : Integer);
  1050.  
  1051. Purpose
  1052.   RecallScreen will restore the screencontents stored in Number onto the video
  1053.   memory. Number must be in the range from 0 to 5. No more screens are allowed
  1054.   to be stored in the memory.
  1055.  
  1056.   
  1057. Procedure RecallWindow.
  1058. -----------------------
  1059. Calling
  1060.   RecallWindow(X1, Y1, X2, Y2 : Integer);
  1061.  
  1062. Purpose
  1063.   RecallWindow will restore the screencontents of the window in the screen coor-
  1064.   dinates X1,Y1 to X2,Y2 onto the video memory.
  1065.  
  1066.   
  1067. Procedure RepeatCh.
  1068. -------------------
  1069. Calling
  1070.   RepeatCh(Ch : Char; X, Y, Num : Integer);
  1071.  
  1072. Purpose
  1073.   RepeatCh will write the character Ch Num times on the screen starting in the
  1074.   coordinates X,Y.
  1075.  
  1076.   
  1077. Procedure SaveScreen.
  1078. ---------------------
  1079. Calling
  1080.   SaveScreen(Number : Integer);
  1081.  
  1082. Purpose
  1083.   Stores the screen contents into your memory and giving it Number. Please only
  1084.   use numbers from 0 to 5. No more screens are allowed to be stored in your
  1085.   memory.
  1086.   
  1087.  
  1088. Procedure SaveWindow.
  1089. ---------------------
  1090. Calling
  1091.   SaveWindow(X1, Y1, X2, Y2 : Integer);
  1092.  
  1093. Purpose
  1094.   Saves the contents of the screen area at the coordinates from X1,Y1 to X2,Y2
  1095.   into your memory.
  1096.  
  1097.   
  1098. Procedure SBox.
  1099. ---------------
  1100. Calling
  1101.   SBox(X1, Y1, X2, Y2 : Integer; Header : String);
  1102.  
  1103. Purpose
  1104.   SBox draws a single lined box on the screen from the coordinates X1,Y1 to
  1105.   X2,Y2 and put on the title given in Header.
  1106.  
  1107.   
  1108. Procedure SetColor.
  1109. -------------------
  1110. Calling
  1111.   SetColor(ForeGr, BackGr : Integer);
  1112.  
  1113. Purpose
  1114.   SetColor sets the default colors to ForeGr as foreground color and BackGr as
  1115.   background color.
  1116.   
  1117.  
  1118. Procedure ShowCursor.
  1119. ---------------------
  1120. Calling
  1121.   ShowCursor;
  1122.  
  1123. Purpose
  1124.   Makes the cursor visible on the current X,Y screen coordinates.
  1125.  
  1126.   
  1127. Procedure SmallCursor.
  1128. ----------------------
  1129. Calling
  1130.   SmallCursor;
  1131.  
  1132. Purpose
  1133.   Turns the text cursor into a single line to make it as small as possible.
  1134.  
  1135.   
  1136. Procedure WriteCh.
  1137. ------------------
  1138. Calling
  1139.   WriteCh(Ch : Char; X, Y : Integer);
  1140.  
  1141. Purpose
  1142.   WriteCh writes a character in the current colors on the screen coordinates X,Y
  1143.   using very fast assembler coding.
  1144.  
  1145.   
  1146. Procedure WriteChLn.
  1147. --------------------
  1148. Calling
  1149.   WriteChLn(Ch : Char; X, Y : Integer);
  1150.  
  1151. Purpose
  1152.   WriteChLn works as WriteCh but finishes with an carriage return and line feed.
  1153.  
  1154.   
  1155. Procedure WriteSt.
  1156. ------------------
  1157. Calling
  1158.   WriteSt(St : String; X, Y : Integer);
  1159.  
  1160. Purpose
  1161.   WriteSt writes a string in the current colors on the screen coordinates X,Y
  1162.   using very fast assembler coding.
  1163.  
  1164.   
  1165. Procedure WriteStLn.
  1166. --------------------
  1167. Calling
  1168.   WriteStLn(St : String; X, Y : Integer);
  1169.  
  1170. Purpose
  1171.   WriteStLn works as WriteSt but finishes with and carriage return and line
  1172.   feed.
  1173.  
  1174.  
  1175.  
  1176.  
  1177.  
  1178.  
  1179.  
  1180.  
  1181.  
  1182.  
  1183. ┌──────────────────────────────────────────────────────────────────────────────┐
  1184. │ Turbo Development Library V. 4.10   Chapter 8                     UNIT TDDIR │
  1185. └──────────────────────────────────────────────────────────────────────────────┘
  1186.  
  1187. Procedure ShowDir.
  1188. ------------------
  1189. Calling
  1190.   ShowDir;
  1191.  
  1192. Purpose
  1193.   ShowDir prints a directory of files from the current logged path.
  1194.   Files are displayed 6 to a line in horizontal format. The maximum number
  1195.   of files that can be displayed is 120.
  1196.  
  1197.  
  1198. Procedure AskNewPath.
  1199. ---------------------
  1200. Calling
  1201.   AskNewPath;
  1202.  
  1203. Purpose
  1204.   AskNewPath allows the user to change the current path by entering a new
  1205.   drive/directory. AskNewPath does not display a directory of files so use
  1206.   ShowDir to display the files in the changed directory.
  1207.  
  1208.  
  1209. Function GetFileFromDir.
  1210. ------------------------
  1211. Calling
  1212.   PickFile:=GetFileFromDir : String[80];
  1213.  
  1214. Purpose
  1215.   GetFileFromDir returns a user-selected filename. The function displays a
  1216.   directory of the current logged drive and allows the user to pick the file
  1217.   using a point-and-shoot reverse-video cursor. The user may change path
  1218.   during the selection by hitting the F2 key.
  1219.  
  1220.  
  1221.  
  1222.  
  1223.  
  1224.  
  1225.  
  1226.  
  1227.  
  1228.  
  1229. ┌──────────────────────────────────────────────────────────────────────────────┐
  1230. │ Turbo Development Library V. 4.10   Chapter 9                   UNIT TDMOUSE │
  1231. └──────────────────────────────────────────────────────────────────────────────┘
  1232.  
  1233. ┌──────────────────────────────────────────────────────────────────────────────┐
  1234. │ NB: TDMOUSE WILL WORK IN GRAPHICS MODE AS WELL AS IN TEXT MODE.              │
  1235. └──────────────────────────────────────────────────────────────────────────────┘
  1236.  
  1237. Function FindMouseX.
  1238. --------------------
  1239. Calling
  1240.   X:=FindMouseX : Word;
  1241.  
  1242. Purpose
  1243.   FindMouseX returns the X-coordinate where the mouse cursor is placed on the
  1244.   screen.
  1245.  
  1246.   
  1247. Function FindMouseY.
  1248. --------------------
  1249. Calling
  1250.   Y:=FindMouseY : Word;
  1251.  
  1252. Purpose
  1253.   FindMouseY returns the Y-coordinate where the mouse cursor is placed on the
  1254.   screen.
  1255.  
  1256.  
  1257. Procedure HideMouse.
  1258. --------------------
  1259. Calling
  1260.   HideMouse;
  1261.  
  1262. Purpose
  1263.   HideMouse makes the mouse cursor disappear from the screen.
  1264.  
  1265.   
  1266. Function InitMouse.
  1267. -------------------
  1268. Calling
  1269.   Test:=InitMouse : Boolean;
  1270.  
  1271. Purpose
  1272.   InitMouse is used to initialize the mouse driver. If no mouse driver is found,
  1273.   InitMouse will return FALSE.
  1274.  
  1275.   
  1276. Function MouseInBox.
  1277. --------------------
  1278. Calling
  1279.   Test:=MouseInBox(X1, Y1, X2, Y2) : Boolean;
  1280.  
  1281. Purpose
  1282.   MouseInBox tests if the mouse is inside the given screen coordinates. If not
  1283.   the function will return FALSE otherwise TRUE.
  1284.  
  1285.   
  1286. Procedure MouseMotion.
  1287. ----------------------
  1288. Calling
  1289.   MouseMotion(Horiz, Vert : Byte);
  1290.  
  1291. Purpose
  1292.   MouseMotion sets the motion and sensibility of the mouse in both the
  1293.   horizontal and the vertical way.
  1294.  
  1295.              
  1296. Procedure MouseWindow.
  1297. ----------------------
  1298. Calling
  1299.   MouseWindow(X1, Y1, X2, Y2 : Word);
  1300.  
  1301. Purpose
  1302.   MouseWindow defines the window on the screen (from coordinate X1,Y1 to coordi-
  1303.   nate X2,Y2) where the mouse can't come outside. Default is the whole screen
  1304.   area.
  1305.  
  1306.   
  1307. Procedure PosMouse.
  1308. -------------------
  1309. Calling
  1310.   PosMouse(X, Y : Word);
  1311.  
  1312. Purpose
  1313.   PosMouse positions the mouse cursor at the screen coordinate X,Y.
  1314.  
  1315.   
  1316. Procedure ShowMouse.
  1317. --------------------
  1318. Calling
  1319.   ShowMouse;
  1320.  
  1321. Purpose
  1322.   ShowMouse shows the mouse cursor at the current mouse screen coordinates if
  1323.   the mouse driver is succesfully initialized.
  1324.  
  1325.       
  1326. Function TestButton.
  1327. --------------------
  1328. Calling
  1329.   Button:=TestButton : Byte;
  1330.  
  1331. Purpose
  1332.   TestButton tests if any of the mouse buttons are pressed.
  1333.   Returns         0 : No buttons pressed
  1334.                   1 : Left button prerssed
  1335.                   2 : Right button pressed
  1336.                   4 : Middle button pressed (only 3-button mouse)
  1337.  
  1338.  
  1339.  
  1340.  
  1341.  
  1342.  
  1343.  
  1344.  
  1345.  
  1346.  
  1347. ┌──────────────────────────────────────────────────────────────────────────────┐
  1348. │ Turbo Development Library V. 4.10   Chapter 10                   UNIT TDSWAP │
  1349. └──────────────────────────────────────────────────────────────────────────────┘
  1350.  
  1351. Procedure SwapB.
  1352. ----------------
  1353. Calling
  1354.   SwapB(Var B1, B2 : Byte);
  1355.  
  1356. Purpose
  1357.   Swapping the two bytes B1 and B2 very fast.
  1358.  
  1359.  
  1360. Procedure SwapI.
  1361. ----------------
  1362. Calling
  1363.   SwapI(Var I1, I2 : Integer);
  1364.  
  1365. Purpose
  1366.   Swapping the two integers I1 and I2 very fast.
  1367.  
  1368.  
  1369. Procedure SwapL.
  1370. ----------------
  1371. Calling
  1372.   SwapL(Var L1, L2 : LongInt);
  1373.  
  1374. Purpose
  1375.   Swappin the two long-integers L1 and L2 very fast.
  1376.  
  1377.  
  1378. Procedure SwapW.
  1379. ----------------
  1380. Calling
  1381.   SwapW(Var W1, W2 : Word);
  1382.  
  1383. Purpose
  1384.   Swapping the two words W1 and W2 very fast.
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390.  
  1391.  
  1392.  
  1393.  
  1394.  
  1395. ┌──────────────────────────────────────────────────────────────────────────────┐
  1396. │ Turbo Development Library V. 4.10   Chapter 11                  UNIT TDTIMER │
  1397. └──────────────────────────────────────────────────────────────────────────────┘
  1398.  
  1399. Procedure StartTimer.
  1400. ---------------------
  1401. Calling
  1402.   StartTimer;
  1403.  
  1404. Purpose
  1405.   StartTimer starts a background timer and sets the time to zero. Operations
  1406.   can be done while the timer is still running.
  1407.  
  1408.   
  1409. Function StopTimer.
  1410. -------------------
  1411. Calling
  1412.   Time:=StopTimer : Real;
  1413.  
  1414. Purpose
  1415.   StopTimer stops the background timer and returns the seconds in the variable
  1416.   Time.
  1417.  
  1418.  
  1419.  
  1420.  
  1421.  
  1422.  
  1423.  
  1424.  
  1425.  
  1426.  
  1427. ┌──────────────────────────────────────────────────────────────────────────────┐
  1428. │ Turbo Development Library V. 4.10   Chapter 12                  UNIT TDPRINT │
  1429. └──────────────────────────────────────────────────────────────────────────────┘
  1430.  
  1431. Procedure DumpScreen.
  1432. ---------------------
  1433. Calling
  1434.   DumpScreen;
  1435.  
  1436. Purpose
  1437.   Sends a copy of the current text screen to the printer attashed to LPT1.
  1438.   Works like striking the Print Screen key.
  1439.  
  1440.         
  1441. Procedure Print.
  1442. ----------------
  1443. Calling
  1444.   Print(St : String);
  1445.  
  1446. Purpose
  1447.   Sends the string St onto the line printer attashed to LPT1.
  1448.  
  1449.   
  1450. Procedure PrintLn.
  1451. ------------------
  1452. Calling
  1453.   PrintLn(St : String);
  1454.  
  1455. Purpose
  1456.   Works as Print but finishes with a carriage return and a line feed.
  1457.  
  1458.  
  1459.  
  1460.  
  1461.  
  1462.  
  1463.  
  1464.  
  1465.  
  1466.  
  1467.  
  1468. ┌──────────────────────────────────────────────────────────────────────────────┐
  1469. │ Turbo Development Library V. 4.10    Chapter 13                   UNIT TDDOS │
  1470. └──────────────────────────────────────────────────────────────────────────────┘
  1471.  
  1472. Function CalculateDriveNumber.
  1473. ------------------------------
  1474. Calling
  1475.   Num:=CalculateDriveNumber(Dr : Char) : Byte;
  1476.  
  1477. Purpose
  1478.   CalculateDriveNumber returns the number equal to the drive letter
  1479.   given in Dr. Dos uses the DriveNumber for all of its disk operations.
  1480.  
  1481. Example
  1482.   Program Exam12;
  1483.   Uses TdDos;
  1484.   Begin
  1485.        Writeln('Drive A: has no.: ',CalculateDriveNumber('A'));
  1486.   End.
  1487.  
  1488.  
  1489.  
  1490. Function CheckDrive.
  1491. --------------------
  1492. Calling
  1493.   Test:=CheckDrive(Dr : Char) : Byte;
  1494.  
  1495. Purpose
  1496.   CheckDrive checks the given Drive in Dr and returns:
  1497.   0 : Drive is OK.
  1498.   1 : Illegal drive letter.
  1499.   2 : Drive is not ready.
  1500.   3 : Drive with error.
  1501.  
  1502.                                                                                  
  1503. Function CheckPath.
  1504. -------------------
  1505. Calling
  1506.   Test:=CheckPath(Path : String) : Boolean;
  1507.  
  1508. Purpose
  1509.   CheckPath checks the existens of the given Path, f.ex.
  1510.   C:\TP6\TDDEMOS. It will return TRUE if the given path is found,
  1511.   otherwise it will return FALSE.
  1512.                                                                                  
  1513.  
  1514. Function DisableDrive.
  1515. ----------------------
  1516. Calling
  1517.   Test:=DisableDrive(Dr : Char) : Boolean;
  1518.  
  1519. Purpose
  1520.   DisableDrive will attempt to disable the given drive in Dr, and
  1521.   return TRUE if succeded.
  1522.   Notice: After you have succesfully disabled a drive, Dos will no
  1523.   longer recognise it, and you need to enable it again or reset your
  1524.   computer to gain contact with that drive again.
  1525.   Notice: Do never try to disable the drive, you are currently wor-
  1526.   king with.
  1527.  
  1528.  
  1529. Function DiskSectorsRead.
  1530. -------------------------
  1531. Calling
  1532.   Test:=DiskSectorsRead(Dr : Word; FirstSec : LongInt; NumSec : Word;
  1533.                        Var Buffer) : Boorlan;
  1534.  
  1535. Purpose
  1536.   DiskSectorsRead will read NumSec sectors from FirstSec on drive Dr into
  1537.   Var Buffer. Remember to set the Buffer as an Array of Byte, and remember
  1538.   to check how many bytes your sectors contains. That is normally 512 bytes
  1539.   per sector, but can vary from device to device.
  1540.  
  1541. Example
  1542.   Program Exam13;
  1543.   Uses TdDos;
  1544.   Var Buffer : Array[1..1024] Of Byte;
  1545.       Test   : Boolean;
  1546.   Begin
  1547.        Test:=DiskSectorsRead(0,0,2,Buffer);
  1548.   End.
  1549.  
  1550.  
  1551. Function DiskSectorsWrite.
  1552. --------------------------
  1553. Calling
  1554.   Test:=DiskSectorsWrite(Dr : Word; FirstSec : LongInt; NumSec : Word;
  1555.                         Var Buffer) : Boolean;
  1556.  
  1557. Purpose
  1558.   DiskSectorsWrite will write the information in Var Buffer on NumSec Sec-
  1559.   tors from FirstSec on drive Dr. An error will set Test to FALSE. Any pos-
  1560.   sible error may be Illegal Drive, No Sectors, Unformatted Disk, DiskError,
  1561.   No Disk In Drive and so on.
  1562.   
  1563.  
  1564. Function DriveIs.
  1565. -----------------
  1566. Calling
  1567.   Drive:=DriveIs : Char;
  1568.  
  1569. Purpose
  1570.   DriveIs will return the DriveLetter of the current drive.
  1571.  
  1572. Example
  1573.   Program Exam14;
  1574.   Uses TdDos;
  1575.   Begin
  1576.        Writeln('Current Drive Is ',DriveIs,':');
  1577.   End.
  1578.  
  1579.  
  1580. Function EnableDrive.
  1581. ---------------------
  1582. Calling
  1583.   Test:=EnableDrive(Dr : Char) :Boolean;
  1584.  
  1585. Purpose
  1586.   EnableDrive will attempt to enable a disabled drive. When you Disable a
  1587.   drive, you only tell Dos, that the drive is no longer valid. The BIOS
  1588.   will still know it is there. EnableDrive will force the BIOS to tell
  1589.   Dos that the srive still is valid, and is it succeed, Dos will recognice
  1590.   that drive again.
  1591.  
  1592.  
  1593. Function GetDosDataArea.
  1594. ------------------------
  1595. Calling
  1596.   Point:=GetDosDataArea : Pointer;
  1597.  
  1598. Purpose
  1599.   GetDosDataArea will return a pointer to the Address where Dos starts
  1600.   to store its datas.
  1601.  
  1602.  
  1603. Function GetFatInfo.
  1604. --------------------
  1605. Calling
  1606.   Test:=GetFatInfo(Dr : Char; Var NOA, SPA, SS : Word) : Boolean;
  1607.  
  1608. Purpose
  1609.   GetFatInfo returns TRUE if succeeded on the drive Dr, and then the Var
  1610.   NOA will hold Number Of Allocated Units, SPA will hold Sectors Per Allo-
  1611.   cated Unit and SS will hold the Size Of Sector in bytes.
  1612.  
  1613. Example
  1614.   Program Exam15;
  1615.   Uses TdDos;
  1616.   Var NOS, SPA, SS : Word;
  1617.       Test         : Boolean;
  1618.   Begin
  1619.        Test:=GetFatInfo('C', NOA, SPA, SS);
  1620.        If Test Then
  1621.        Begin
  1622.             Writeln('Number Of Allocated Units  : ',NOA);
  1623.             Writeln('Sectors Per Allocated Unit : ',SPA);
  1624.             Writeln('Size Of Sector in bytes    : ',SS);
  1625.             Halt;
  1626.        End;
  1627.        Writeln('Illegal Drive.');
  1628.   End.
  1629.  
  1630.  
  1631. Function GetFreeDiskSpace.
  1632. --------------------------
  1633. Calling
  1634.   Test:=GetFreeDiskSpace(Dr : Char; Var Space : LongInt) : Boolean;
  1635.  
  1636. Purpose
  1637.   GerFreeDiskSpace checks the drive Dr and returns TRUE if found. If
  1638.   TRUE, the Var Space will hold the free space on the disk in bytes.
  1639.  
  1640.  
  1641. Function GetInfoOnDisk.
  1642. -----------------------
  1643. Calling
  1644.   Test:=GetInfOOnDisk(Dr : Char; Var TC, CA, SPC, BPS, TU, TF : LongInt)
  1645.                      : Boolean;
  1646. Purpose
  1647.   GetInfoOnDisk is an extended version of GetFatInfo. GetInfoOnDisk returns
  1648.   all the information, you could come across when using f.x. sector copy-
  1649.   ing on a disk. If Test is TRUE then Var TC will hold Total Clusters, CA
  1650.   will hold Clusters Available, SPC will hold Sectors Per Cluster, BPS will
  1651.   hold Bytes Per Sector, TU will hold Total Used and TF will hold Total
  1652.   Free.
  1653.  
  1654.  
  1655. Procedure GetIntVector.
  1656. -----------------------
  1657. Calling
  1658.   GetIntVector(Number : Word; Var Vec : Pointer);
  1659.  
  1660. Purpose
  1661.   See the Borland Pascal 7.0 Manual for the purpose and description of the
  1662.   procedure GetIntVec. GetIntVector is equal to that, but is 50% faster.
  1663.  
  1664.  
  1665. Function GetMemorySize.
  1666. -----------------------
  1667. Calling
  1668.   Test:=GetMemorySize(Var Memory : LongInt) : Boolean;
  1669.  
  1670. Purpose
  1671.   GetMemorySize will return your current memory size in Var Memory if Test
  1672.   is set to TRUE.
  1673.  
  1674. Example
  1675.   Program Exam16;
  1676.   Uses TdDos;
  1677.   Var Memory : LongInt;
  1678.   Begin
  1679.        If NOT GetMemorySize(Memory) Then
  1680.        Begin
  1681.             Writeln('Error. Halting.');
  1682.             Halt;
  1683.        End;
  1684.        Writeln('Memory Size : ',Memory);
  1685.   End.
  1686.  
  1687.  
  1688. Function GetRealDrives.
  1689. -----------------------
  1690. Calling
  1691.   Drives:=GetRealDrives : Byte;
  1692.  
  1693. Purpose
  1694.   GetRealDrives returns the number of real drives attached to your system.
  1695.  
  1696.  
  1697. Function GetRemainingFiles.
  1698. ---------------------------
  1699. Calling
  1700.   Files:=GetRemainingFiles : Integer;
  1701.  
  1702. Purpose
  1703.   GetRemainingFiles returns the number of files, you still are allowed to
  1704.   open, referred to your CONFIG.SYS line FILES=??.
  1705.  
  1706.  
  1707. Function GetSystemUpstartTime.
  1708. ------------------------------
  1709. Calling
  1710.   Test:=GetSystemUpstartTime(Vat SUTime : DateTime) : Boolean;
  1711.  
  1712. Purpose
  1713.   GetSystemUpstartTime returns TRUE if the function is able to find the
  1714.   time. If TRUE, the upstart time is stored in a DateTime record, there-
  1715.   fore you must specify DOS in your USES line, f.ex:
  1716.   USES TdDos, DOS, ...
  1717.  
  1718.  
  1719. Function GetVolLabel.
  1720. ---------------------
  1721. Calling
  1722.   Test:=GetVolLabel(Dr : Char; Var VL : String) : Boolean;
  1723.  
  1724. Purpose
  1725.   Returns the volume label on a disk formatted using MS-DOS 4.X or higher.
  1726.   If it is not able to find a volume label on the specified drive Dr, it
  1727.   returns FALSE.
  1728.  
  1729.  
  1730. Procedure FillRegisters.
  1731. ------------------------
  1732. Calling
  1733.   FillRegisters(Var Regs : Registers);
  1734.  
  1735. Purpose
  1736.   FillRegisters will fill all the registers with a zero, for preparing them
  1737.   for use with DOS / BIOS calls. 80% of all the functions and procedures in
  1738.   Turbo Development Library uses FillRegisters.
  1739.   Notice: This also needs DOS.TPU in your USES-line.
  1740.  
  1741.  
  1742. Function IsDRDOS.
  1743. -----------------
  1744. Calling
  1745.   TestDOS:=IsDRDOS : Boolean;
  1746.  
  1747. Purpose
  1748.   IsDRDOS is a little trace function, working with only some versions of DR
  1749.   / MS DOS. It returns TRUE is DR-DOS is installed, and FALSE if not.
  1750.  
  1751. Example
  1752.   Program Exam17;
  1753.   Uses TdDos;
  1754.   Begin
  1755.        WriteLn('DR-DOS is running: ',IsDRDOS);
  1756.   End.
  1757.  
  1758.  
  1759. Procedure GetDiskUsage.
  1760. -----------------------
  1761. Calling
  1762.   GetDiskUsage(Dr : Char; Var DFree, DUsed, DToral : LongInt);
  1763.  
  1764. Purpose
  1765.   GetDiskUsage returns same informations about the disk in the drive Dr. The
  1766.   variable DFree will hold the free unused disk space in bytes, DUsed will
  1767.   hold the used disk space in bytes and DTotal will hold the total disk
  1768.   capasity in bytes.
  1769.  
  1770. Example
  1771.   Program Exam18;
  1772.   Uses TdDos;
  1773.   Var DFree, DUsed, DTotal : LongInt;
  1774.   Begin
  1775.        GetDiskUsage(DriveIs, DFree, DUsed, DTotal);
  1776.        Writeln('Info on current drive: ',DriveIs);
  1777.        Writeln('Free bytes  : ',DFree);
  1778.        Writeln('Used bytes  : ',DUsed);
  1779.        Writeln('Total bytes : ',DTotal);
  1780.   End.
  1781.  
  1782.  
  1783. Function MakeFile.
  1784. ------------------
  1785. Calling
  1786.   Test:=MakeFile(Name : String) : Boolean;
  1787.  
  1788. Purpose
  1789.   MakeFile will create and close an empty file. If Test returns FALSE
  1790.   something has gone wrong, eg. writeprotected disk or no disk in drive.
  1791.  
  1792.  
  1793. Procedure SetIntVector.
  1794. -----------------------
  1795. Calling
  1796.   SetIntVector(Number : Word; Vec : Pointer);
  1797.  
  1798. Purpose
  1799.   Refer to your Borland Pascal 7.0 manual for the purpose and description on
  1800.   SetIntVec. Theese two procedures are equal, but SetIntVector is about 50 %
  1801.   faster.
  1802.  
  1803.  
  1804. Function SetMaxFilesOpen.
  1805. -------------------------
  1806. Calling
  1807.   Test:=SetMaxFilesOpen(Files : Byte) : Boolean;
  1808.  
  1809. Purpose
  1810.   Tries to re-config your system-setup and ir returns TRUE if Files now will
  1811.   be the maximum of open files.
  1812.  
  1813.  
  1814. Function SetVolLabel.
  1815. ---------------------
  1816. Calling
  1817.   Test:=SetVolLabel(Dr : Char; VL1, VL2 : Word) : Boolean;
  1818.  
  1819. Purpose
  1820.   SetVolLabel will try to enter a new volume label on the disk in drive Dr.
  1821.   The volume label is two hex-words: VL1 and VL2. If SetVolLabel returns
  1822.   TRUE, it has succeeded.
  1823.  
  1824.  
  1825.  
  1826.  
  1827.  
  1828.  
  1829.  
  1830.  
  1831.  
  1832.  
  1833. ┌──────────────────────────────────────────────────────────────────────────────┐
  1834. │ Turbo Development Library V. 4.10   Chapter 14                  UNIT TDCACHE │
  1835. └──────────────────────────────────────────────────────────────────────────────┘
  1836.  
  1837.  
  1838. ┌[ Notice ]────────────────────────────────────────────────────────────────────┐
  1839. │ TdCache commands are over 100 % faster than the original file handle com-    │
  1840. │ mands of Borland Pascal 7.0.                                                 │
  1841. │ TdCache can maximum have four open cached files. The minimum cachesize is    │
  1842. │ 1024 bytes (1 Kb) and the maximum cachesize is 63488 bytes (62 Kb).          │
  1843. │ The variable cIOResult takes care of the results of the TdCache.             │
  1844. └──────────────────────────────────────────────────────────────────────────────┘
  1845.  
  1846.  
  1847. Procedure cAppend.
  1848. ------------------
  1849. Calling
  1850.   cAppend(Var Nr : cFile; FName : String);
  1851.  
  1852. Purpose
  1853.   Opens the file FName and the file pointer is set to endposition.
  1854.  
  1855.  
  1856.  
  1857. Procedure cClose.
  1858. -----------------
  1859. Calling
  1860.   cClose(Nr : cFile);
  1861.  
  1862. Purpose
  1863.   Closes the file Nr and deallocates all memory used with the handle of that
  1864.   file.
  1865.  
  1866.  
  1867.  
  1868. Function cEOF.
  1869. --------------
  1870. Calling
  1871.   Test:=cEOF(Nr : cFile) : Boolean;
  1872.  
  1873. Purpose
  1874.   Returns TRUE if the filepointer is at the last position of the file Nr. If
  1875.   not it returns FALSE.
  1876.  
  1877.  
  1878.  
  1879. Procedure cErase.
  1880. -----------------
  1881. Calling
  1882.   cErase(FName : String);
  1883.  
  1884. Purpose
  1885.   Deletes the file FName from the disk. Please notice the file FName must be
  1886.   cAssigned.
  1887.  
  1888.  
  1889.  
  1890. Function cFilePos.
  1891. ------------------
  1892. Calling
  1893.   Position:=cFilePos(Nr : cFile) : LongInt;
  1894.  
  1895. Purpose
  1896.   Returns the current filepointers position in the file Nr.
  1897.  
  1898.  
  1899.  
  1900. Function cFileSize.
  1901. -------------------
  1902. Calling
  1903.   Size:=cFileSize(Nr : cFile) : LongInt;
  1904.  
  1905. Purpose
  1906.   Returns the current size of the file Nr in bytes.
  1907.  
  1908.  
  1909.  
  1910. Function cOpen.
  1911. ---------------
  1912. Calling
  1913.   OpFile:=cOpen(FName : String; Task : tOpenType; CacheAmount : Word) : Byte;
  1914.  
  1915. Purpose
  1916.   Opens a file FName with the specified operations in Task. CacheAmount can hold
  1917.   any number from 1024 to 63488 and specifies the amount of bytes that will be
  1918.   used as direct memory cache.
  1919.   Task can only hold the constants coRewrite, coReset or coAppend.
  1920.  
  1921.  
  1922.  
  1923. Procedure cRead.
  1924. ----------------
  1925. Calling
  1926.   cRead(Nr : cFile; Var Value : Byte);
  1927.  
  1928. Purpose
  1929.   cRead is reading one byte from the file Nr on its current position and increa-
  1930.   sing the filepointer with one.
  1931.  
  1932.  
  1933.  
  1934. Procedure cReadBit.
  1935. -------------------
  1936. Calling
  1937.   cReadBit(Nr : cFile; Var Value : Byte; Size : tBitSize);
  1938.  
  1939. Purpose
  1940.   cReadBit reads from file Nr's current bitposition Size (1 to 8) bits into
  1941.   the variable Value.
  1942.  
  1943.  
  1944.  
  1945. Procedure cReadEXT.
  1946. -------------------
  1947. Calling
  1948.   cReadEXT(Nr : cFile; Var Value; L : Word);
  1949.  
  1950. Purpose
  1951.   cReadEXT reads L bytes from file Nr's current position into the variable
  1952.   Value, then the filepointer is increased with L.
  1953.  
  1954.  
  1955.  
  1956. Procedure cReset.
  1957. -----------------
  1958. Calling
  1959.   cReset(Var Nr : cFile; FName : String);
  1960.  
  1961. Purpose
  1962.   Opens the file FName and sets the filepointer to the first position in the
  1963.   file.
  1964.  
  1965.  
  1966.  
  1967. Procedure cRewrite.
  1968. -------------------
  1969. Calling
  1970.   cRewrite(Var Nr : cFile; FName : String);
  1971.  
  1972. Purpose
  1973.   Opens a new file FName. If a file with the same name exists same place on your
  1974.   disk it is deleted withour further warnings.
  1975.  
  1976.  
  1977.  
  1978. Procedure cSeek.
  1979. ----------------
  1980. Calling
  1981.   cSeek(Nr : cFile; Pos : LongInt);
  1982.  
  1983. Purpose
  1984.   Sets the filepointer in file Nr to position Pos. The first position in a file
  1985.   is always zero.
  1986.  
  1987.  
  1988.  
  1989. Procedure cSeekBit.
  1990. -------------------
  1991. Calling
  1992.   cSeekBit(Nr : cFile; Bit : tBitPos);
  1993.  
  1994. Purpose
  1995.   Sets the bit position in file Nr on bit 0 to 7.
  1996.  
  1997.  
  1998.  
  1999. Procedure cWrite.
  2000. -----------------
  2001. Calling
  2002.   cWrite(Nr : cFile; Value : Byte);
  2003.  
  2004. Purpose
  2005.   Writes in file Nr on current fileposition the value of byte and increases the
  2006.   filepointer with one.
  2007.  
  2008.  
  2009.  
  2010. Procedure cWriteBit.
  2011. --------------------
  2012. Calling
  2013.   cWriteBit(Nr : cFile; Value : Byte; Size : tBitSize);
  2014.  
  2015. Purpose
  2016.   cWriteBit writes Size (1 to 8) to file Nr at the current bit position.
  2017.  
  2018.  
  2019.  
  2020. Procedure cWriteEXT.
  2021. --------------------
  2022. Calling
  2023.   cWriteEXT(Nr : cFile; Var Value; L : Word);
  2024.  
  2025. Purpose
  2026.   cWriteEXT writes the contents of the variable Value with the length L in the
  2027.   file Nr at it's current fileposition. The filepointer is then increased with
  2028.   L.
  2029.  
  2030.  
  2031.  
  2032.  
  2033.  
  2034.  
  2035.  
  2036.  
  2037.  
  2038.  
  2039. ┌──────────────────────────────────────────────────────────────────────────────┐
  2040. │ Turbo Development Library V. 4.10   Chapter 15                  UNIT TDMENUB │
  2041. └──────────────────────────────────────────────────────────────────────────────┘
  2042.  
  2043. Procedure DefaultBoxMenu.
  2044. -------------------------
  2045. Calling
  2046.   DefaultBoxMenu;
  2047.  
  2048. Purpose
  2049.   DefaultBoxMenu simply rewrites the menu text that was established with the
  2050.   last call to InitBoxMenu.
  2051.   Think of DefaultBoxMenu as a repait kit to use whenever you have cleared
  2052.   the screen or written over the menu during the processing of your program.
  2053.  
  2054.  
  2055. Procedure InitBoxMenu.
  2056. ----------------------
  2057. Calling
  2058.   InitBoxMenu(X, Y : Integer; MenuStr : String[80]);
  2059.  
  2060. Purpose
  2061.   InitBoxMenu is the initialization procedure for GetFromBoxMenu, a pop-up
  2062.   menu procedure. InitBoxMenu locates the menu on the screen, initializes
  2063.   the menu choices to be displayed and writes the menu on the screen.
  2064.   The menu will pop-up on the screen at the position you pick.
  2065.   In the String[80] the rules are that each seperate menu choice must begin
  2066.   with an unique capital letter and be terminated by a slash (/) delimiter.
  2067.   For example the MenuStr 'Load/Save/Quit/' will set up the following three
  2068.   choices:
  2069.                ╔═════════╗
  2070.                ║  Load   ║
  2071.                ║  Save   ║
  2072.                ║  Quit   ║
  2073.                ╚═════════╝
  2074.  
  2075.  
  2076. Function GetFromBoxMenu.
  2077. ------------------------
  2078. Calling
  2079.   Choice:=GetFromBoxMenu : Char;
  2080.  
  2081. Purpose
  2082.   GetFromBoxMenu allows the user to play with a menu initialized proviously
  2083.   with InitBoxMenu and returns the user's menu pick in form of a unique
  2084.   character. GetFromBoxMenu will highlight the current menu pick with a
  2085.   reverse-video bar cursor. The user may move the cursor up and down with
  2086.   the arrow keys. The user may select a choice on the menu by placing the
  2087.   cursor on a choice and hitting enter key or by hitting the key that is the
  2088.   first letter of his choice.
  2089.  
  2090.  
  2091.  
  2092.  
  2093.  
  2094.  
  2095.  
  2096.  
  2097.  
  2098.  
  2099. ┌──────────────────────────────────────────────────────────────────────────────┐
  2100. │ Turbo Development Library V. 4.10   Chapter 16                  UNIT TDMENU1 │
  2101. └──────────────────────────────────────────────────────────────────────────────┘
  2102.  
  2103. Procedure Default123Menu.
  2104. -------------------------
  2105. Calling
  2106.   Default123Menu;
  2107.  
  2108. Purpose
  2109.   Default123Menu simply rewrites the menu text that was established with the
  2110.   last call to Init123Menu.
  2111.   Think of Default123Menu as a repait kit to use whenever you have cleared
  2112.   the screen or written over the menu during the processing of your program.
  2113.  
  2114.  
  2115. Procedure Init123Menu.
  2116. ----------------------
  2117. Calling
  2118.   Init123Menu(X, Y : Integer; MenuStr : String[80]);
  2119.  
  2120. Purpose
  2121.   Init123Menu is the initialization procedure for GetFrom123Menu, a Lotus 123
  2122.   style horizontal, reverse-video-bar-cursor menu procedure. Init123Menu lo-
  2123.   cates the menu on the screen, initializes the menu choices to be displayed
  2124.   and writes the screen. The menu will be displayed horizontal on the line you
  2125.   pick.
  2126.   The String[80] MenuStr contains the menu choices to be displayed. Notice
  2127.   as this routine (as TDL Pull Down and Box menus) uses the first character
  2128.   of every choice as reference, DO NOT include menu choices with the same first
  2129.   character. Each menu choice must me separated with a slash (/), and the last
  2130.   choice must be ended with a slash too.
  2131.   To initialize a 123-like menu with the choices
  2132.         [ Save  Load  About  Quit ]
  2133.   at position 20,1 on the screen use:
  2134.   Init123Menu(20, 1, 'Save/Load/About/Quit/');
  2135.  
  2136.  
  2137. Function GetFrom123Menu.
  2138. ------------------------
  2139. Calling
  2140.   Choice:=GetFrom123Menu : Char;
  2141.  
  2142. Purpose
  2143.   GetFrom123Menu allows the user to play with a menu initialized proviously
  2144.   with Init123Menu and returns the user's menu pick in form of a unique
  2145.   character. GetFrom123Menu will highlight the current menu pick with a
  2146.   Lotus-123 reverse-video bar cursor. The user may move the cursor left and
  2147.   right with the arrow keys. The user may select a choice on the menu by pla-
  2148.   cing the cursor on a choice and hitting enter key or by hitting the key
  2149.   that is the first letter of his choice.
  2150.  
  2151.  
  2152.  
  2153.  
  2154.  
  2155.  
  2156.  
  2157.  
  2158.  
  2159.  
  2160. ┌──────────────────────────────────────────────────────────────────────────────┐
  2161. │ Turbo Development Library V. 4.10   Chapter 17                  UNIT TDMENUP │
  2162. └──────────────────────────────────────────────────────────────────────────────┘
  2163.  
  2164. Function GetFromPullMain.
  2165. -------------------------
  2166. Calling
  2167.   Main:=GetFromPullMain : Char;
  2168.  
  2169. Purpose
  2170.   GetFromPullMain allows the user to play with the main menu and make his
  2171.   choice. When the user makes a menu by hitting the enter key or the first
  2172.   letter of a pick, the function will terminate and return to the calling
  2173.   program the first letter (always capitalized) of the chosen menu item.
  2174.  
  2175.  
  2176. Function GetFromPullSub.
  2177. ------------------------
  2178. Calling
  2179.   Sub:=GetFromPullSub(SubMenu : Integer) : Char;
  2180.  
  2181. Purpose
  2182.   When the user has picked a sub menu on the main menu, he is allowed to
  2183.   pick an item from the sub menu with this function.
  2184.  
  2185.  
  2186. Procedure InitPullMain.
  2187. -----------------------
  2188. Calling
  2189.   InitPullMain(MenuStr : String[80]);
  2190.  
  2191. Purpose
  2192.   InitPullMain is the initialization procedure for the function GetFromPull-
  2193.   Main. The String[80] contains the choices of the main menu. Each choice
  2194.   must begin with a capital letter and be terminated by the delimiter slash
  2195.   (/). For example if MenuStr were given the value 'Files/Search/Quit/'
  2196.   InitPullMain would set up the three main menu choices horizontal on top of
  2197.   your screen:
  2198.         [ Files   Search   Quit ]
  2199.   The first capital letter in each menu choice is important because that letter
  2200.   will become the shorecut keystroke for choosing the menu item directly. So
  2201.   don't begin two menu choices with the same letter.
  2202.  
  2203.  
  2204. Procedure InitPullSub.
  2205. ----------------------
  2206. Calling
  2207.   InitPullSub(SubMenu : Integer; MenuStr : String[80]);
  2208.  
  2209. Purpose
  2210.   InitPullSub is the initialization procedure for the function GetFromPullSub.
  2211.   The String[80] contains the choices of the sub menu number SubMenu, begin-
  2212.   ning with number one.
  2213.   Still remember the delimiter slash (/) and start each item in a sub menu
  2214.   with a differebt capital letter.
  2215.   For Example if MenuStr in main menu is like the example in InitPullMain and
  2216.   MenuStr in the SubMenu 1 is 'Load/Save/Dir/Quit/' InitPullSub and InitPull-
  2217.   Main would set up this menu:
  2218.         [ Files   Search   Quit ]
  2219.          | Load   |
  2220.          | Save   |
  2221.          | Dir    |
  2222.          | Quit   |
  2223.  
  2224.  
  2225. Procedure RebuildIt.
  2226. --------------------
  2227. Calling
  2228.   RebuildIt;
  2229.  
  2230. Purpose
  2231.   The procedure RebuildIt will rebuild the menu bar on your screen, in case
  2232.   of a cleared screen or an overwritten menu bar.
  2233.  
  2234.  
  2235. Procedure RecallDesktop.
  2236. ------------------------
  2237. Calling
  2238.   RecallDesktop;
  2239.  
  2240. Purpose
  2241.   RecallDesktop recalls a previously saved desktop to it's original look.
  2242.  
  2243.  
  2244. Procedure RewritePullMain.
  2245. --------------------------
  2246. Calling
  2247.   RewritePullMain;
  2248.  
  2249. Purpose
  2250.   RewritePullMain does nothing more than rewriting the main menu bar hori-
  2251.   zontal on top of the screen.
  2252.  
  2253.  
  2254. Procedure RewritePullSub.
  2255. -------------------------
  2256.  
  2257. Calling
  2258.   RewritePullSub(PullSub : Integer);
  2259.  
  2260. Purpose
  2261.   RewritePullSub rewrites the given sub menu.
  2262.  
  2263.  
  2264. Procedure SaveDesktop.
  2265. ----------------------
  2266. Calling
  2267.   SaveDesktop;
  2268.  
  2269. Purpose
  2270.   SaveDesktop saves the desktop look in your memory for later to rewrite
  2271.   it with the procedure RecallDesktop.
  2272.  
  2273.  
  2274.  
  2275.  
  2276.  
  2277.  
  2278.  
  2279.  
  2280.  
  2281.  
  2282. ┌──────────────────────────────────────────────────────────────────────────────┐
  2283. │ Turbo Development Library V. 4.10   Chapter 18                  UNIT TDCANON │
  2284. └──────────────────────────────────────────────────────────────────────────────┘
  2285.  
  2286.  
  2287.  
  2288. ┌──────────────────────────────────────────────────────────────────────────────┐
  2289. │       This Unit should work with all Canon BJ & compatible printers.         │
  2290. └──────────────────────────────────────────────────────────────────────────────┘
  2291.  
  2292. Function CSetPrintMode.
  2293. -----------------------
  2294. Calling
  2295.   Test:=CSetPrintMode : Boolean;
  2296.  
  2297. Purpose
  2298.   To set the printing mode on your Canon BJ & Compatible printer. Mode 0-11
  2299.   are legal. Refer to your printers manual for the codes.
  2300.  
  2301.  
  2302. --------------------------------------------------------------------------------
  2303. The following constants are to be included in your printer operations e.g.
  2304. WriteLn(Lst, CFatOn+'This Text Is Fat'+CFatOff+', And This Is Not.');
  2305. The constants may be combined as you wish.
  2306. --------------------------------------------------------------------------------
  2307.  
  2308. CUnderOn        CUnderOff               Turn On / Off underlining.
  2309. CFatOn          CFatOff                 Turn On / Off fat printing.
  2310. CShadowOn       CShadowOff              Turn On / Off shadow printing.
  2311. CSuperOn                                Turn On super script printing.
  2312. CSubOn                                  Turn On sub script printing.
  2313. CSSOff                                  Turn Off super or sub script printing.
  2314. CUniDirOn       CUniDirOff              Turn On / Off uni directional printing.
  2315. CWideOn         CWideOff                Turn On / Off wide printing.
  2316. COverOn         COverOff                Turn On / Off overlining.
  2317. CCharOne                                Select charset number one.
  2318. CCharTwo                                Select charset number two.
  2319. CPrestige                               Select prestige charset.
  2320. COffLine                                Turns the printer Off Line.
  2321. CReset                                  Resets your printer to default.
  2322.  
  2323.  
  2324.  
  2325.  
  2326.  
  2327.  
  2328.  
  2329.  
  2330.  
  2331.  
  2332. ┌──────────────────────────────────────────────────────────────────────────────┐
  2333. │ Turbo Development Library V. 4.10   Chapter 19                  UNIT TDEPSON │
  2334. └──────────────────────────────────────────────────────────────────────────────┘
  2335.  
  2336.  
  2337.  
  2338. ┌──────────────────────────────────────────────────────────────────────────────┐
  2339. │         This unit should work with all Epson & compatible printers.          │
  2340. └──────────────────────────────────────────────────────────────────────────────┘
  2341.  
  2342. Function ESetNlqMode.
  2343. ---------------------
  2344. Calling
  2345.   Test:=ESetNlqMode(Mode : Byte) : Boolean;
  2346.  
  2347. Purpose
  2348.   To set the current Near-Letter-Quality mode (0-3) on your printer. Refer
  2349.   to your printers manual for the description of the different modes.
  2350.   If your printer supports more modes than 0, 1, 2 and 3 and you are a regis-
  2351.   tered user of TDL, send your name, address and register number and write
  2352.   how many modes your printer (and the make and model of printer) supports.
  2353.   Then you'll recieve a free update of TDEPSON Unit.
  2354.  
  2355.  
  2356. Function ESetNationalCode.
  2357. --------------------------
  2358. Calling
  2359.   Test:=ESetNationalCode(Code : Byte) : Boolean;
  2360.  
  2361. Purpose
  2362.   To set the national code of the character set, you want your printer to
  2363.   write in (0-13). Refer to your printers manual for the codes.
  2364.  
  2365.  
  2366.  
  2367. --------------------------------------------------------------------------------
  2368. The following constants are to be included in your printer operations e.g.
  2369. WriteLn(Lst, EFatOn+'This Text Is Fat'+EFatOff+', And This Is Not.');
  2370. The constants may be combined as you wish.
  2371. --------------------------------------------------------------------------------
  2372.  
  2373. ESmallOn        ESmallOff               Turn On / Off small printing.
  2374. EReset                                  Reset your printer to default.
  2375. EUnderOn        EUnderOff               Turn On / Off underlining.
  2376. EItalicOn       EItalicOff              Turn On / Off italic writing.
  2377. EFatOn          EFatOff                 Turn On / Off fat printing.
  2378. EShadowOn       EShadowOff              Turn On / Off shadow printing.
  2379. EEliteOn                                Turn On elite printing.
  2380. EPicaOn                                 Turn On pica printing.
  2381. ESuperOn                                Turn On super script printing.
  2382. ESubOn                                  Turn On sub script printing.
  2383. ESSOff                                  Turn Off super or sub script printing.
  2384. EUniDirOn       EUniDirOff              Turn On / Off uni directional printing.
  2385. EWideOn         EWideOff                Turn On / Off wide printing.
  2386. EOverOn         EOverOff                Turn On / Off overlining.
  2387. EStandard                               Loads standard charset.
  2388. EIBM                                    Loads IBM charset.
  2389. EHeightOn       EHeightOff              Turn On / Off heigh chars printing.
  2390. ENlqOn          ENlqOff                 Turn On / Off near-letter-quality.
  2391.  
  2392.  
  2393.  
  2394.  
  2395.  
  2396.  
  2397.  
  2398.  
  2399.  
  2400.  
  2401. ┌──────────────────────────────────────────────────────────────────────────────┐
  2402. │ Turbo Development Library V. 4.10   Chapter 21                 UNIT TDSTRING │
  2403. └──────────────────────────────────────────────────────────────────────────────┘
  2404.  
  2405. Turbo Pascal limits strins to a maximum of 255 characters. While this is
  2406. long enough for most strings, there are times when you will need longer
  2407. strings. The procedures in this unit allows you to define strings up to
  2408. 32.767 characters long. The procedures assume a record type that includes
  2409. an integer field, which keeps track of the string length, and an array of
  2410. characters.
  2411. To initialize a BigString, always follow this procedure:
  2412.  
  2413.         Const MaxBigStringLen = 2000;    { Max. 2000 chars in each string }
  2414.         Type BigString = Record
  2415.                                Length : Integer;
  2416.                                Ch     : Array[1..MaxBigStringLen] of Char;
  2417.                          End;
  2418.  
  2419. The type BigString can hold up to 2000 characters in this example, but can
  2420. easily be modified by the programmer.
  2421.  
  2422. The procedures and functions in this unit mimic the standard Turbo Pascal
  2423. string commands; they use the same syntax and names, but begin with the
  2424. word "Big". For example, the equivalent of Turbo Pascal's Insert command
  2425. is the BigInsert command.
  2426.  
  2427.  
  2428. Procedure SetBigString.
  2429. -----------------------
  2430. Calling
  2431.   SetBigString(Var St1 : BigString; S : String);
  2432.  
  2433. Purpose
  2434.   SetBigString initializes a big string, St1, to a value specified in para-
  2435.   meter s.
  2436.  
  2437.  
  2438. Procedure BigConcat.
  2439. --------------------
  2440. Calling
  2441.   BigConcat(Var St1 : BigString; St2 : BigString);
  2442.  
  2443. Purpose
  2444.   TDString's big strings cannot use the Turbo Pascal concatenation operator
  2445.   +. You can, however, simulate the Concat command, as shown in the procedu-
  2446.   re BigConcat, which concantenates St2 to St1.
  2447.  
  2448.  
  2449. Procedure BigInsert.
  2450. --------------------
  2451. Calling
  2452.   BigInsert(Var St1, St2 : BigString; P : Integer);
  2453.  
  2454. Purpose
  2455.   BigInsert inserts one BigString inside a target BigString starting at cha-
  2456.   racter P.
  2457.  
  2458.  
  2459. Procedure BigDelete.
  2460. --------------------
  2461. Calling
  2462.   BigDelete(Var St1 : BigString; P, Len : Integer);
  2463.  
  2464. Purpose
  2465.   BigDelete removes characters from a BigString starting at character P. It
  2466.   deletes as many characters as specified in the parameter Len.
  2467.  
  2468.  
  2469. Function BigPos.
  2470. ----------------
  2471. Calling
  2472.   Position:=BigPos(Var St1, St2 : BigString) : Integer;
  2473.  
  2474. Purpose
  2475.   The function BigPos returns the position of one BigString inside another
  2476.   BigString. To indicate the position, BigPos returns a positive number; if
  2477.   no match is found, it returns 0.
  2478.  
  2479.  
  2480. Function BigLength.
  2481. -------------------
  2482. Calling
  2483.   Length:=BigLength(Var St1 : BigString) : Integer;
  2484.  
  2485. Purpose
  2486.   The function BigLength returns an Integer with the length of a BigString.
  2487.  
  2488.  
  2489. Procedure BigCopy.
  2490. ------------------
  2491. Calling
  2492.   BigCopy(Var St1, St2 : BigString; P, Len : Integer);
  2493.  
  2494. Purpose
  2495.   Because the Turbo Pascal string function Copy cannot be directly duplica-
  2496.   ted for large strings (Turbo Pascal cannot define a function using a Re-
  2497.   cord data type) you must use BigCopy, which provides a result in the form
  2498.   of a propcedure. BigCopy takes Len characters from St1, starting from cha-
  2499.   racter P, and assigns them to St2.
  2500.  
  2501.  
  2502.  
  2503.  
  2504.  
  2505. ╔══════════════════════════════════════════════════════════════════════════════╗
  2506. ║                                                                              ║
  2507. ║ Turbo Development Library V. 4.10 Registration Form.                         ║
  2508. ║ ----------------------------------------------------                         ║
  2509. ║                                                                              ║
  2510. ║ Yes, I would like to become a registered user of Turbo Development Library   ║
  2511. ║ Version 4.10 for Borland Pascal 7.0 DOS, and recieve TDL 4.10 with printed   ║
  2512. ║ manual, the first upgrade FREE and licence to low-cost future upgrades.      ║
  2513. ║                                                                              ║
  2514. ║ I understand, I must enclose a checque made payable to:                      ║
  2515. ║       OnTime Marketing                                                       ║
  2516. ║       Tunoevej 39                                                            ║
  2517. ║       DK-9900 Frederikshavn, Denmark                                         ║
  2518. ║                                                                              ║
  2519. ║ Prices, incl. delivery, are:                 _____                           ║
  2520. ║               Scandinavia     150.00 DKr    |_____|                          ║
  2521. ║               Germany          45.00 DMark  |_____|   Please                 ║
  2522. ║               UK               19.00 UK£    |_____|   Check                  ║
  2523. ║               USA              25.00 US$    |_____|   One !                  ║
  2524. ║               Rest Of World    30.00 US$    |_____|                          ║
  2525. ║                                                                              ║
  2526. ║                                                                              ║
  2527. ║ Company:___________________________________________________________          ║
  2528. ║                                                                              ║
  2529. ║ Name:______________________________________________________________          ║
  2530. ║                                                                              ║
  2531. ║ Title:____________________ Department:_____________________________          ║
  2532. ║                                                                              ║
  2533. ║ Address:___________________________________________________________          ║
  2534. ║                                                                              ║
  2535. ║ Town:______________________________________________________________          ║
  2536. ║                                                                              ║
  2537. ║ Country:___________________________________________________________          ║
  2538. ║                                                                              ║
  2539. ║                                                                              ║
  2540. ║ _____________________   _________________   _______________________          ║
  2541. ║         Place                 Date                  Signed                   ║
  2542. ║                                                                              ║
  2543. ║                                                                              ║
  2544. ║ Please mail to: OnTime Marketing (dept TDL410)                               ║
  2545. ║                 Tunoevej 30                                                  ║
  2546. ║                 DK-9900 Frederikshavn                                        ║
  2547. ║                 Denmark                                                      ║
  2548. ║                                                                              ║
  2549. ╚══════════════════════════════════════════════════════════════════════════════╝
  2550.  
  2551.